import { createApp } from 'vue'
import App from '@/App.vue'
// 导入SVG图标虚拟模块
import 'virtual:svg-icons-register'

const app = createApp(App)

//#region ==============================element模块===========================

// 导入element模块
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'
import zhCn from 'element-plus/es/locale/lang/zh-cn'

// 配置Element Plus为中文和自定义主题色
app.use(ElementPlus, {
  locale: zhCn,
  // 全局配置 Element Plus 主题色
  namespace: 'el',
  size: 'default',
})

//#endregion

//#region ==============================路由模块===========================

import router from './router'
// 导入路由守卫
import '@/router/permission'

// 注册Vue路由
app.use(router)

//#endregion

//#region ==============================仓库模块===========================

import pinia from '@/stores'

// 注册Pinia状态管理库
app.use(pinia)

//#endregion


//#region ==============================权限指令===========================

// 导入权限指令
import { hasPermission, hasAllPermissions } from '@/directives/permission'
// 注册全局权限指令
app.directive('has', hasPermission)
app.directive('has-all', hasAllPermissions)

//#endregion

//#region ==============================dayjs模块===========================

import dayjs from 'dayjs'
import 'dayjs/locale/zh-cn'
// 配置dayjs为中文
dayjs.locale('zh-cn')

//#endregion

//#region ==============================样式模块===========================

// 导入全局样式
import '@/styles/index.scss'

//#endregion

//#region ==============================Mock模块===========================

// 导入并启动 MSW Mock 服务
// import { startMocking } from '../mock'

/**
 * 启动 Mock 服务
 * 在开发环境中启动 MSW 服务以提供模拟 API
 */
// startMocking()

//#endregion

//#region ==============================初始化设置===========================

// 初始化主题设置
import { useSettingStore } from '@/stores'
const settingStore = useSettingStore()
settingStore.initTheme()

//#endregion

//#region ==============================全局组件===========================

// 导入全局组件插件
import GlobalComponentsPlugin  from '@/components'
// 安装全局组件插件
app.use(GlobalComponentsPlugin)

//#endregion

app.mount('#app')
